iT邦幫忙

2023 iThome 鐵人賽

DAY 4
1
DevOps

第一次參賽就學 Kubernetes系列 第 4

[Day 04] 使用 kind、minikube 建立環境

  • 分享至 

  • xImage
  •  

前一篇文章提到要使用 kind 和 minikube 來建立叢集。

這篇會介紹:

  • kind
  • minikube

下一篇介紹:

  • kubeadm (後來想想既然是挑戰就要都做!)

在開始前補充介紹一項工具 kubectl:

kubectl

是用來與 Kubernetes 叢集溝通的工具,例如在 nodes 上建立 pods、service 或其他 Kubernetes 元件都是透過 kubectl 下命令來執行。

待會在安裝 kind 及 minikube 時會使用類似 kind create clusterminikube start 等指令,這些都是針對「叢集」物件去做操作。kubectl 則是與叢集溝通,負責建立「叢集內的物件」,例如 nodes、pods。

  • kind、minikube 及 kubeadm 針對叢集
  • kubectl 針對叢集內要操作的物件資源

kind

前置作業

因為 kind 是使用 Docker 來建立及管理 Kubernetes 的環境,故先確認電腦上是否有安裝 Docker 或 Podman (與 Docker 相似的工具)。隨著 Kubernetes 的發展,kind 後續也開始支援 Docker 以外的 container runtime,像是 containerd 和 Podman。

開始安裝

kind 的安裝可以使用套件管理工具、二進制檔(binary)和其它等方式,這邊我是用 macOS 使用 Homebrew 來安裝 kind。

  1. 輸入指令
brew install kind
  1. 安裝好後檢查是否安裝成功,查看 kind 版本。
kind version

安裝豪不費力 XD。接著我們來試試看如何建立叢集。

建立叢集

  1. 輸入以下指令(該指令預設會給予叢集命名為 kind):
kind create cluster

這邊特別要注意如果沒有啟動 Docker 就使用上述指令會報以下錯誤:

https://ithelp.ithome.com.tw/upload/images/20230919/20162511XPg6FMioTI.png

  1. 我們可以使用以下指令列出所有叢集,並查看我們剛才建立的叢集:
kind get clusters
  1. 以及查看叢集 kind 的狀態:
kubectl cluster-info
  1. 這邊有趣的是輸入 docker images 可以看到 kind 拉下來的 image (kindest/node):
docker images

https://ithelp.ithome.com.tw/upload/images/20230919/20162511OI1Zk5Fl1h.png

  1. 再輸入:
docker ps

https://ithelp.ithome.com.tw/upload/images/20230919/201625119PGl4DbYB0.png

可以看見 kind 起了一個名為 kind-control-plane 的容器,也就是叢集中的 master。

建立其他叢集

還可以用 --name 為叢集取名:

kind create cluster --name kind-2023

一樣可以用 kind get clusters 列出所有叢集。

刪除叢集

刪除預設的 kind 叢集:

kind delete cluster

或是指定要刪除的叢集名稱:

kind delete cluster --name kind-2023

最後都刪光。


minikube

minikube 是一個可以在本機執行的單節點或多節點 Kubernetes 叢集,使用 VM 或 Docker 在本機建立一個虛擬環境,並在該環境中安裝 Kubernetes。在 minikube 的容器中包含了所有叢集的相關元件(例如:kube-apiserver、kube-proxy 與 etcd 等)

此外 minikube 預先安裝好 container runtime (Docker engine),以便可以使用 Docker 來管理 Kubernetes 容器。

前置作業

Driver

minikube 需透過 VM 或容器來執行,也就是本機需要安裝 drivers (VM or container) 才可以成功啟動 minikube。其中 Docker 為官方推薦的 drivers,若是本機上已經安裝則可不再安裝。

檢視資源

  • 2CPUs 或更多
  • 2GB 以上記憶體
  • 20GB 硬碟空間

開始安裝

  1. 選擇合適的安裝類型

https://ithelp.ithome.com.tw/upload/images/20230919/201625116J0OPzZozd.png

  1. 一樣用 Homebrew
brew install minikube 

這邊提醒若是使用 Homebrew 遇到 minikube 安裝失敗,我們需要先刪除舊的 minikube links 並連結至新版 minikube。

就這樣安裝完成,也是一樣毫不費力 XD。一樣接著來試試看建立叢集。

建立叢集

  1. 輸入指令,minikube 會建立及啟動一個單節點的叢集:
minikube start
  1. 檢查是否有成功
minikube status

https://ithelp.ithome.com.tw/upload/images/20230919/20162511ITtIQNfogW.png

當我們安裝 minikube 時,同時也幫我們安裝好 kubectl(kubernetes-cli) 了。我們可以透過 kubectl 來查看當前的 cluster 環境。

  1. 列出所有在叢集的節點:
kubectl get nodes

可以看到當前叢集有個 control-plane 節點,以及它的狀態(Status)、Kubernetes 的版本 v1.27.4、何時加入 cluster 的時間(Age)。

https://ithelp.ithome.com.tw/upload/images/20230919/20162511QmmDzfJ3LF.png

  1. 之前有介紹的 pods,在這邊也可以查看:
  • po:是 pod 的縮寫
  • -A:是 -all-namespaces,列出所有資源(包含隱藏的)。
kubectl get po -A:

可以看到之前有提到的 kube-apiserver、etcd 和 controller-manager 等。

https://ithelp.ithome.com.tw/upload/images/20230919/20162511Uq3oTc8ezz.png

  1. 另外 minikube 提供一個 WebUI 可以用 minikube dashboard 啟動,並用來查看及管理叢集中的所有資源。
minikube dashboard

刪除叢集

刪除叢集:

minikube delete --all

列印當前的叢集:

minikube profile list
🤹  Exiting due to MK_USAGE_NO_PROFILE: No minikube profile was found.
💡  Suggestion:

    You can create one using 'minikube start'.

全刪光。

還不熟 kubectl 指令

可以在命令提示視窗使用 kubectl help 來查詢指令用法,除了會說明指令用途外,也會提供範例與 flag 的說明,來幫助使用者更深入瞭解指令的使用方式。

像我看官方文件不懂 kubectl get po 指令時,可以加上 --help 來查看指令的用法:

kubectl get po --help

接下來是介紹 kubeadm,比上面的安裝步驟都來的複雜許多~


參考來源

  1. kind - Quick Start
  2. [ Kube 43.2 ] Getting started with KinD | Local multi-node k8s cluster in Docker containers
  3. Kubernetes Crash Course for Absolute Beginners [NEW]
  4. minikube - minikube start

上一篇
[Day 03] 環境建置工具
下一篇
[Day 05] kubeadm 建置環境 (上篇)
系列文
第一次參賽就學 Kubernetes30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言